package pers.wensheng.patterns.structural_pattern.combination_pattern.transparent_combination_pattern.entity;

import java.util.ArrayList;
import java.util.List;

/**
 * 菜单类
 * 树枝节点
 */
public class Menu extends MenuComponent {

    /**
     * 菜单可以有多个子菜单或者子菜单项
     */
    private List<MenuComponent> list = new ArrayList<>();

    /**
     * -----------构造方法--------------
     */
    public Menu(String name,int level) {
        this.name = name;
        this.level = level;
    }

    /**
     * 添加子菜单
     *
     * @param menuComponent 可以是子菜单也可以是子菜单项
     */
    @Override
    public void add(MenuComponent menuComponent) {
        list.add(menuComponent);
    }

    /**
     * 移除子菜单
     *
     * @param menuComponent 可以是子菜单也可以是子菜单项
     */
    @Override
    public void remove(MenuComponent menuComponent) {
        list.remove(menuComponent);
    }

    /**
     * 获取指定的子菜单
     *
     * @param index
     * @return
     */
    @Override
    public MenuComponent getChild(int index) {
        return list.get(index);
    }

    /**
     * 打印菜单名称的方法（包含子菜单和子菜单项）
     */
    @Override
    public void print() {
        for (int i = 0; i < level; i++) {
            System.out.print("-");
        }

        //打印菜单名称
        System.out.println(name);
        //打印子菜单名称和子菜单项名称
        for (MenuComponent component : list) {
            component.print();
        }
    }



}
